home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1997 November & December / Amiga-CD 1997 #11-12.iso / pd-disketten / dms-gepackt / 8_95 / apd-8-95-2.dms / apd-8-95-2.adf / ARexx Kurs / Listings / Listing5 < prev    next >
Text File  |  1995-07-24  |  4KB  |  78 lines

  1. /* ARexx-Stripper  © Karten Wysocki 1995 --------------------- */
  2.  
  3. OPTIONS RESULTS           /* Rückgabewerte in RESULT speichern */
  4. 'REQUEST FILE PATH "ARexx/" MASK "#?" TITLE "Makro to Strip:"'
  5.  
  6. filename = RESULT         /* Resultat in Variable übertragen   */
  7. 'OPEN NAME "' || filename || '"'        /* Textfenster öffnen  */
  8. 'LOCK CURRENT'            /* Textfenster für Benutzer sperren  */
  9.  
  10. /* Konstanten für Zeichen-Vergleiche festlegen: */
  11. leer  = hash(" ")         /* Die ARexx-Funktion hash()         */
  12. slash = hash("/")         /* liefert den ASCII-Code            */
  13. stern = hash("*")         /* eines Zeichens zurück             */
  14.  
  15. 'QUERY LINES VAR=LINES'   /* Anzahl Zeilen Im Text erfragen    */
  16.  
  17. /* Äußere Schleife zum Abarbeiten aller Textzeilen einleiten   */
  18.  do count = 1 to lines
  19.   'QUERY ANYCHAR'            /* GoldED fragen ob Zeile leer.   */
  20.   if RESULT=TRUE             /* Wenn Zeile nicht leer          */
  21.    then do                   /* dann Beginne Funktionblock.    */
  22.     char = ""                /* Zeichenvariable initialisieren */
  23.     exit = 0                 /* Abbruchvariable auf unwahr.    */
  24.     del  = 0                 /* Delete-Merker setzen.          */
  25.     do forever               /* Innere Schleife einleiten.     */
  26.      'QUERY CODE VAR=CHAR'   /* Zeichen unter Cursor lesen.    */
  27.      call companddel()       /* Unterprogramm Aufrufen.        */
  28.      if exit = 1 then leave  /* Wenn exit gesetzt raus         */
  29.     end                      /* Zum Anfang der inneren Schl.   */
  30.     if del = 0 then 'DOWN'   /* Wenn nicht gelöscht, Zeile run.*/
  31.    end                       /* Ende des Funktionsblocks.      */
  32.    else do                   /* sonst Beginne Funktionsblock.  */
  33.     'DELETE LINE'            /* Lösche Zeile.                  */
  34.     count = count + 1        /* Inkrementiere Zähler.          */
  35.    end                       /* Ende des Funktionsblocks.      */
  36.   'FIRST'                    /* Cursor zum Zeilenanfang.       */
  37.  end                         /* Zum Anfang der äußeren Schleife*/
  38.  
  39. /* Dateinamen ohne Pfad holen und in Variable speichern:       */
  40. 'QUERY FILE VAR=FILENAME'
  41.  
  42. 'GOTO TOP'              /* Cursor auf erste Textzeile setzen   */
  43. 'INSERT LINE'           /* Zeile vor erster Textzeile einfügen */
  44. 'GOTO TOP'              /* Cusor auf eingefügte Zeile setzen   */
  45.  
  46. /* Kommentar in eingefügte erste Textzeile schreiben: */
  47. 'TEXT STAY T="/** Stripped' filename '**/"'
  48.  
  49. 'UNLOCK'                /* Textfenster für Benutzer freigeben  */
  50. exit                    /* Programm beenden                    */
  51.  
  52. /*
  53.  Unterprogramm companddel() = (Compare and Delete)
  54.  
  55.  Dieses Unterprogramm benutzt die Variablen des Hauptprogramms
  56.  und liefert daher nichts zurück. Im Unterprogramm werden die im
  57.  Hauptprogramm von GoldED eingelesenen Zeichen mit den zu
  58.  löschenden Zeichen verglichen und evtl. gelöscht.
  59. */
  60.  
  61. companddel:
  62.  select                      /* Mehrfachauswahl einleiten      */
  63.    when char = leer          /* Wenn Leerzeichen               */
  64.      then 'DEL'              /*  dann Löschen.                 */
  65.    when char = slash         /* Wenn Schrägstrich              */
  66.      then do                 /*  dann Funktionsblock           */
  67.        'RIGHT'               /* Cursor nach rechts             */
  68.        'QUERY CODE VAR=CHAR' /* Nächstes Zeichen lesen         */
  69.        if char = stern       /* Wenn Sternchen gelesen         */
  70.          then do             /* dann Funktionsblock            */
  71.            'DELETE LINE'     /* Lösche Zeile                   */
  72.            del = 1           /* Löschmerker setzen             */
  73.          end                 /* Ende des Funktionsblocks       */
  74.      end                     /* Ende des Funktionsblocks       */
  75.    otherwise exit = 1        /* Andernfalls beende Schleife    */
  76.  end                         /* Ende der Mehrfachauswahl       */
  77. return                       /* Zurück zum Hauptprgramm.       */
  78.